All files / vidly/routes movies.js

27.5% Statements 11/40
0% Branches 0/14
0% Functions 0/5
33.33% Lines 11/33
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 722x 2x 2x 2x 2x   2x         2x                                         2x                                             2x               2x               2x
const {Movie, validate} = require('../models/movie'); 
const {Genre} = require('../models/genre');
const mongoose = require('mongoose');
const express = require('express');
const router = express.Router();
 
router.get('/', async (req, res) => {
  const movies = await Movie.find().sort('name');
  res.send(movies);
});
 
router.post('/', async (req, res) => {
  const { error } = validate(req.body); 
  if (error) return res.status(400).send(error.details[0].message);
 
  const genre = await Genre.findById(req.body.genreId);
  if (!genre) return res.status(400).send('Invalid genre.');
 
  const movie = new Movie({ 
    title: req.body.title,
    genre: {
      _id: genre._id,
      name: genre.name
    },
    numberInStock: req.body.numberInStock,
    dailyRentalRate: req.body.dailyRentalRate
  });
  await movie.save();
  
  res.send(movie);
});
 
router.put('/:id', async (req, res) => {
  const { error } = validate(req.body); 
  if (error) return res.status(400).send(error.details[0].message);
 
  const genre = await Genre.findById(req.body.genreId);
  if (!genre) return res.status(400).send('Invalid genre.');
 
  const movie = await Movie.findByIdAndUpdate(req.params.id,
    { 
      title: req.body.title,
      genre: {
        _id: genre._id,
        name: genre.name
      },
      numberInStock: req.body.numberInStock,
      dailyRentalRate: req.body.dailyRentalRate
    }, { new: true });
 
  if (!movie) return res.status(404).send('The movie with the given ID was not found.');
  
  res.send(movie);
});
 
router.delete('/:id', async (req, res) => {
  const movie = await Movie.findByIdAndRemove(req.params.id);
 
  if (!movie) return res.status(404).send('The movie with the given ID was not found.');
 
  res.send(movie);
});
 
router.get('/:id', async (req, res) => {
  const movie = await Movie.findById(req.params.id);
 
  if (!movie) return res.status(404).send('The movie with the given ID was not found.');
 
  res.send(movie);
});
 
module.exports = router;